AWS SDK (Software Development Kit) ব্যবহার করে আপনি প্রোগ্রাম্যাটিকভাবে DynamoDB ডেটাবেসের বিভিন্ন অপারেশন যেমন Create, Read, Update, Delete (CRUD) এবং আরও অনেক কিছু পরিচালনা করতে পারেন। AWS SDK বিভিন্ন ভাষায় উপলব্ধ, যেমন Python (Boto3), JavaScript (AWS SDK for JavaScript), Java (AWS SDK for Java) ইত্যাদি। এখানে আমরা AWS SDK for Python (Boto3) ব্যবহার করে DynamoDB এর কিছু সাধারণ ডেটাবেস অপারেশন দেখবো।
DynamoDB এর সাথে কাজ করার জন্য আপনাকে প্রথমে Boto3 ইনস্টল করতে হবে এবং AWS এর সাথে যুক্ত করতে হবে।
Boto3 ইনস্টল:
pip install boto3
AWS Credentials কনফিগারেশন: আপনার AWS ক্লাউড অ্যাক্সেসের জন্য credentials কনফিগার করতে হবে:
aws configure
এখানে আপনাকে আপনার AWS Access Key ID, Secret Access Key, Region, এবং Output format প্রদান করতে হবে।
import boto3
# DynamoDB client তৈরি করা
dynamodb = boto3.client('dynamodb')
# টেবিল তৈরি করা
response = dynamodb.create_table(
TableName='Movies',
KeySchema=[
{
'AttributeName': 'Year',
'KeyType': 'HASH' # Partition key
},
{
'AttributeName': 'Title',
'KeyType': 'RANGE' # Sort key
}
],
AttributeDefinitions=[
{
'AttributeName': 'Year',
'AttributeType': 'N'
},
{
'AttributeName': 'Title',
'AttributeType': 'S'
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
print("Table created successfully:", response)
এই কোডটি একটি নতুন Movies টেবিল তৈরি করবে, যেখানে Year (Partition Key) এবং Title (Sort Key) থাকবে। এটি Provisioned throughput ব্যবহার করবে।
# টেবিলে ডেটা ইন্সার্ট করা
response = dynamodb.put_item(
TableName='Movies',
Item={
'Year': {'N': '2020'},
'Title': {'S': 'The Great Adventure'},
'Director': {'S': 'John Doe'},
'Rating': {'N': '8'}
}
)
print("Item inserted:", response)
এই কোডটি Movies টেবিলে একটি নতুন আইটেম ইন্সার্ট করবে। আইটেমটি একটি Year, Title, Director, এবং Rating অ্যাট্রিবিউট নিয়ে থাকবে।
# টেবিল থেকে ডেটা রিড করা
response = dynamodb.get_item(
TableName='Movies',
Key={
'Year': {'N': '2020'},
'Title': {'S': 'The Great Adventure'}
}
)
if 'Item' in response:
print("Item retrieved:", response['Item'])
else:
print("Item not found.")
এই কোডটি Movies টেবিল থেকে একটি নির্দিষ্ট Year এবং Title সহ আইটেম রিড করবে।
# টেবিলের ডেটা আপডেট করা
response = dynamodb.update_item(
TableName='Movies',
Key={
'Year': {'N': '2020'},
'Title': {'S': 'The Great Adventure'}
},
UpdateExpression="set Rating = :r",
ExpressionAttributeValues={
':r': {'N': '9'}
},
ReturnValues="UPDATED_NEW"
)
print("Item updated:", response['Attributes'])
এই কোডটি Movies টেবিলের একটি আইটেমের Rating আপডেট করবে।
# টেবিল থেকে ডেটা ডিলিট করা
response = dynamodb.delete_item(
TableName='Movies',
Key={
'Year': {'N': '2020'},
'Title': {'S': 'The Great Adventure'}
}
)
print("Item deleted:", response)
এই কোডটি Movies টেবিল থেকে একটি নির্দিষ্ট আইটেম ডিলিট করবে।
যদি আপনি একসাথে একাধিক রেকর্ড ইন্সার্ট বা ডিলিট করতে চান, তবে BatchWriteItem ব্যবহার করতে পারেন।
# একাধিক আইটেম ইন্সার্ট বা ডিলিট করা
response = dynamodb.batch_write_item(
RequestItems={
'Movies': [
{
'PutRequest': {
'Item': {
'Year': {'N': '2021'},
'Title': {'S': 'The Next Chapter'},
'Director': {'S': 'Jane Smith'},
'Rating': {'N': '7'}
}
}
},
{
'DeleteRequest': {
'Key': {
'Year': {'N': '2020'},
'Title': {'S': 'The Great Adventure'}
}
}
}
]
}
)
print("Batch operation response:", response)
এই কোডটি একাধিক রেকর্ড ইন্সার্ট এবং ডিলিট করবে Movies টেবিলে।
Query অপারেশন ব্যবহার করে আপনি নির্দিষ্ট Partition key এবং Sort key এর উপর ভিত্তি করে দ্রুত ডেটা খুঁজে পেতে পারেন। আর Scan অপারেশন সম্পূর্ণ টেবিল স্ক্যান করে, যা তুলনামূলকভাবে ধীর।
response = dynamodb.query(
TableName='Movies',
KeyConditionExpression='Year = :year',
ExpressionAttributeValues={
':year': {'N': '2020'}
}
)
print("Query results:", response['Items'])
response = dynamodb.scan(
TableName='Movies'
)
print("Scan results:", response['Items'])
AWS SDK ব্যবহার করে DynamoDB তে ডেটাবেস অপারেশন যেমন টেবিল তৈরি, ডেটা ইন্সার্ট, রিড, আপডেট, ডিলিট, ব্যাচ অপারেশন, কুয়েরি এবং স্ক্যান করা সম্ভব। এই অপারেশনগুলি আপনার অ্যাপ্লিকেশনকে ডাইনামিকভাবে ডেটাবেসের সাথে ইন্টিগ্রেট করতে সহায়তা করবে। Boto3 ব্যবহার করে Python এ DynamoDB এর সাথে সহজে কাজ করা যায়, এবং এর মাধ্যমে আপনি আপনার ক্লাউড সিস্টেমের পারফরম্যান্স উন্নত করতে পারেন।
common.read_more